/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package CapaDatos;

import java.util.Comparator;
import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;
import javax.swing.JOptionPane;

/**
 *
 * @author Maria
 */
public class ListaInvitado implements ListaTreeSet {

  private SortedSet <Invitado> nodoInvitado;
    private Comparator comparadorCedulaInvitado;



      public ListaInvitado()
    {
        /*
         Se incializa el comparadorApellido con su constructor y
         * se le pasa al nodoCliente para conocer el criterio
         * de ordenamiento de la lista
         */
        comparadorCedulaInvitado = (Comparator) new CompararCedulaInvitado();
        nodoInvitado = new TreeSet(comparadorCedulaInvitado);

    }


    /**
     *Metodo que imprime el contenido de la coleccion
     *
     */
    public void imprimirColeccion()
    {
        int i;
        Invitado registroInvitado;
        Object [] arregloInvitado;

        arregloInvitado = nodoInvitado.toArray();


        System.out.println("DATOS HABITACION");
        System.out.println("-------------");


        for(i=0 ; i<arregloInvitado.length ; i++)
        {
            registroInvitado = (Invitado) arregloInvitado[i];
//            System.out.println("Tipo de habitacion: "+registroHabitacion.getTipoHab());
            System.out.println("Nombre: " + registroInvitado.getNombre());
            System.out.println("Apellido: " + registroInvitado.getApellido());
            System.out.println("Cedula: " + registroInvitado.getCedula());
            System.out.println("Fecha de nacimiento: " + registroInvitado.getFechaNac());
            System.out.println("Sexo: " + registroInvitado.getSexo());
            System.out.println();
        }

    }

    /**
     *
     * Metodo public boolean agregarElemento(Nodo objeto): Este metodo agrega
     * el Nodo "objeto" a la coleccion nodoHabitacion
     */
    public boolean agregarElemento(Object objeto)
    {
        Invitado elInvitado = (Invitado) objeto;
        return nodoInvitado.add(elInvitado);
    }


    public boolean removerElemento(Object objeto)
    {
        Invitado elInvitado = (Invitado) objeto;
        boolean encontrado = false;
        Invitado auxiliar = null;

        Iterator iterador = nodoInvitado.iterator();


        while (!encontrado && iterador.hasNext())
        {

            auxiliar = (Invitado) iterador.next();


            if (elInvitado.equals(auxiliar))
                encontrado = true;
        }


        if (encontrado)
        {
            if (nodoInvitado.remove(auxiliar))
                return true;
        }

        return false;
    }


       public Invitado BuscarInvitado (String cedula)
        {
             boolean encontrado = Boolean.FALSE;
             Invitado auxiliar = null;


               Iterator iterador = nodoInvitado.iterator();


        while (!encontrado && iterador.hasNext())
        {

            auxiliar = (Invitado) iterador.next();

            if (auxiliar.getCedula().equals(cedula))
                encontrado=Boolean.TRUE;

          }
            return auxiliar;
        }
}

